package br.com.certificacao.Conjuntos.treeset;

import java.util.Set;
import java.util.TreeSet;

/*
 * Obrigatoria sobrescricao dos metodos equals e hashCode para eliminar as duplicidades, para classificar os objetos neste caso estou usando a 
 * interface Comparable, nesta classe o hashCode nao foi sobrescrito porque a comparacao feita pela variavel de classe numSerie nao e possivel
 * ja que esta com tipo Float e nao e possivel a conversao.Assim a duplicidade nao foi eliminada, se descomentar o metodo hashCode causara um erro
 * de compilacao.
 */
public class Celular implements Comparable{
	String marca;
	String modelo;
	//float numSerie; Embora no hashCode seja possivel fazer um cast, no metodo compareTo nao e possivel invocar o float, se deixasse dessa maneira
	//haveria um erro de compilacao:float cannot be dereferenced, tambem nao pode ser double
	Float numSerie;
	
	public Celular(String marca, String modelo,Float numSerie){
		this.marca = marca;
		this.modelo = modelo;
		this.numSerie = numSerie;		
	}
	public boolean equals(Object a){
		if(((Celular)a).modelo == this.modelo)
			return true;
		return false;
	}
	public int hashCode(){
		return numSerie;
	}
	@Override
	public int compareTo(Object c) {
		
		return this.numSerie.compareTo(((Celular)c).numSerie);
	}
	public String toString(){
		return "Marca: " + marca+ "\n" + " /Modelo: " + modelo+ "\n" + " /Numero de Serie: " +  numSerie + "\n";
	}
	public static void main(String[] args) {
		Set s = new TreeSet();
		s.add(new Celular("Nokia","M16",32f));
		s.add(new Celular("Samsung","M16",19f));
		s.add(new Celular("Motorola","A65", 33f));
		System.out.println(s);
	}
	
	
}
